﻿module Sustainalytics.Screening {
    import Common = Sustainalytics.Common;

    export interface IFilterCriteriaService {
        //#region AddCriteria
        addCriteriaTypeOne: (filterId: string, criteriaLevel2Id: string, criteriaTemplateId: string, minValue, maxValue, isUpdate: boolean) => any;
        addCriteriaTypeTwo: (filterId: string, filterGroupId: string, criteriaLevel2Id: string, typeTwoIsScreenableCriteriaItems: any, typeTwoIsNotScreenableCriteriaItems: any, isUpdate: boolean) => any;
        addCriteriaTypeThree: (filterId: string, criteriaLevel2Id: string, criteriaTemplateId: string, typeThreeIsScreenableItems: any, typeThreeIsNotScreenableItems: any, filterGroupId: string, isUpdate: boolean) => any;
        addCriteriaTypeFour: (filterId: string, criteriaLevel2Id: string, filterGroupId: string, criteriaTypeFour, isUpdate: boolean) => any;
        addCriteriaTypeFive: (filterId: string, filterGroupId: string, criteriaLevel2Id: string, typeFiveIsScreenableCriteriaItems: any, typeFiveIsNotScreenableCriteriaItems: any, isUpdate: boolean) => any;
        addCriteriaTypeSix: (filterId: string, filterGroupId: string, criteriaLevel2Id: string, criteriaTemplateId: string, minValue, maxValue, type6IsNotScreenableCriteriaItems: any, isUpdate: boolean) => any;
        addCriteriaTypeSeven: (filterId: string, filterGroupId: string, criteriaLevel2Id: string, typeSevenIsScreenableCriteriaItems: any, typeSevenIsNotScreenableCriteriaItems: any, isUpdate: boolean) => any;
        addCriteriaTypeEight: (filterId: string, filterGroupId: string, criteriaLevel2Id: string, typeEightIsScreenableCriteriaItems: any, typeEightIsNotScreenableCriteriaItems: any, isUpdate: boolean) => any;
        addCriteriaTypeNine: (filterId: string, filterGroupId: string, criteriaLevel2Id: string, typeNineIsScreenableCriteriaItems: any, typeNineIsNotScreenableCriteriaItems: any, isUpdate: boolean) => any;
        addCriteriaType16: (filterId: string, filterGroupId: string, criteriaLevel2Id: string, criteriaTemplateId: string, minValue, maxValue, type16IsNotScreenableCriteriaItems: any, isUpdate: boolean) => any;
        addCriteriaType17: (filterId: string, filterGroupId: string, criteriaLevel2Id: string, type17IsScreenableCriteriaItems: any, type17IsNotScreenableCriteriaItems: any, isUpdate: boolean) => any;
        addCriteriaType25: (filterId: string, filterGroupId: string, criteriaLevel2Id: string, type25IsScreenableCriteriaItems: any, type25IsNotScreenableCriteriaItems: any, isUpdate: boolean) => any;
        //#endregion

        addFilterCriteriaToFilter: (filterId: string, listSelectedFilterCriteria: any) => any;

        getFilterCriteriaByFilterId(filterId: string);
        getSelectedCriteriaByFilterCriteriaId(filterId: string, filterCriteriaId: string);
        deleteFilterCriteriaById(filterId: string, id: string);
        deleteFilterCriteriaGroup(filterId: string, filterCriteriaId: string, filterGroupId: string);
    }
}